// 这里是 我们 封装的 每个请求的 API 函数
import request from "./request";

// 登录的API函数
// 会在每个API函数里面把参数的类型都限定好 -- 1.在使用的时候有代码提示，2.进行类型的检查，防止出错
// 默认情况下，所有的 API 函数 ，都是由 request.get/post 返回的数据
// 默认情况下，返回的格式都是： Promise<T>
// 在请求返回的数据里面 Promise<T> 这里面的泛型，会变成 请求后的 then 里面的 res
// 也就是说，如果我们希望在 then 里面的 res 是类型， 需要在 对应的API 函数里面要求返回什么
// 我们在每个 API 函数之后希望 then里面res 应该是 服务器返回的数据
// 服务器返回的数据长什么样？{ data ,errCode , message }
export const LoginApi = (params: ILoginParams): IRP<string> =>
  request.post("/1024/login", params);

// 注册用的API
export const RegisterApi = (params: IRegisterParams): IRP<Object> =>
  request.post("/1024/register", params);

// 获取首页默认信息的API函数
export const HomeDataApi = (): IRP<IHomeData> => request.get("/6666");

// 获取快速刷题的数据
export const FastDataAPi = (): IRP<IFastData> => request.get("/4698");

// 在切换学科页面，actioncode得到当前学科的所有题目分类
export const SubjectsDataApi = (actionCode: string): IRP<IExamItem[]> =>
  request.get(`/6666/${actionCode}
`);

// 获取所有的学科的API
export const GetAllSubjectsApi = (): IRP<IExamItem[]> =>
  request.get("/6666/field");

// 设置默认学科的接口
export const SetDefSubjectApi = (actionCode: string): IRP<Object> =>
  request.post(`/6666/${actionCode}`);

// 这是获取选择题目页面的蹭的动态数据
export const GetSelectQuestionListApi = (
  actionCode: string
): IRP<ISelectQSType[]> => request.get(`/1314/${actionCode}/all`);

// 这是获取题目列表的接口
export const GetQustionsApi = (params: IQuetionParams): IRP<IQuestionModel[]> =>
  request.post("/1314", params);

// 提交答案的API
export const SubmitAnswerApi = (parmas: IAnswerParams): IRP<Object> =>
  request.put("/1314", parmas);
